home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_07 / plauger / isignor.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-03  |  625 b   |  32 lines

  1. // isignore -- istream::ignore(int, int)
  2. #include <limits.h>
  3. #include <istream>
  4.  
  5. istream& istream::ignore(int n, int delim)
  6.     {    // discard through delimiter or count
  7.     _Chcount = 0;
  8.     _TRY_IO_BEGIN
  9.     if (ipfx(1) && 0 < n)
  10.         {    // extract and ignore arbitrary characters
  11.         int ch;
  12.         for (; ; )
  13.             if (n != INT_MAX && --n <= 0)
  14.                 break;
  15.             else if ((ch = rdbuf()->sbumpc()) == EOF)
  16.                 {    // record eof and quit
  17.                 setstate(eofbit);
  18.                 break;
  19.                 }
  20.             else
  21.                 {    // count it and test for delim
  22.                 ++_Chcount;
  23.                 if (ch == delim)
  24.                     break;
  25.                 }
  26.         }
  27.     isfx();
  28.     _CATCH_IO_END
  29.     return (*this);
  30.     }
  31.  
  32.